【レポート】新潟 JAWS-UG-NG 第2回(NDS#44)に参加して技術レベルの高さに圧倒されてきた
はじめに
こんにちは植木和樹@上越妙高オフィスです。10/17(土)に新潟県は長岡市でJAWS-UG-NGの第2回勉強会が開催されました。
JAWS-UG-NGのNGはNiiGata/NaGaokaのNGで、新潟県のJAWS-UGです。第1回勉強会は2013年1月(NDS#30)に開催されており、当時AWS初心者だった私はJAWS Days 2013で総会が開かれると聞きご挨拶をしようと思っていたのにJAWS-UG-NGは参加しておらず、話の流れでJAWS-UG北陸のコアメンバーに誘われ人生初のLTを経験し、その後もJAWS-UG-NGの活動は行われていなくて謎のユーザーグループとなっていたので、じゃあ自分でJAWS-UG上越妙高を立ち上げようというきっかけになったという経緯があります。
約2年半ぶりのJAWS-UG-NG勉強会開催、長岡の技術者とも交流したいなーということで参加してきました。本日は参加レポートとなります。
現地到着
現地に到着するとなぜか弊社 丹内さんの姿が。話を聞くと新潟の大学に通っていたそうで、長岡にもちょくちょく来ているそうです。
ということでレポートは丹内さんに任せて、私視点での勉強会の感想をまとめてみたいと思います。
あと当日のツイートもまとめられてましたので、こちらもどうぞ。
セッションレポート
ラスベガスAWSイベント「re: invent」報告 @wokamoto
@wokamotoさんからはre:Inventの参加報告と新しく発表された各種AWSのサービスの紹介がありました。AWS公式資料やDevelopers.IOで一通りチェックしていましたが、改めて参加者からまとめを聞くとたくさんのサービスが発表されたなぁと実感しますね。
QAにて@wokamotoさんが注目したサービスは「AWS IoT」「AuroraがTokyoリージョンで利用可能になった」「Lambda Update」だそうです。個人的にもLambda Updateは導入の敷居が低く応用がきくので注目しています。
あとラスベガスの思い出として「きれいな水着のお姉さんが目の前で魅力的に踊ってくれる(一部筆者による誇大認識の可能性あり)」ということで、現地組がずいぶん楽しい夜を過ごされたことが伝わるレポートでした。
Docker + AWS(仮) @hayajo
@hayajoさんからはDocker Toolkitを利用して、S3上でプライベートリポジトリを立てEC2上でDockerコンテナーを起動するまでの流れを説明・実演してもらいました。資料はgithubに公開されているので、あとから試すこともできますという配慮ぶり。
最後に、現在はマルチホストのサービスディスカバリの実装について色々試されているということ。知見のある方はぜひ次回のNDSで発表を。
ScalaとSQSで作るジョブキューシステム @neko_gata_s
SQSのクセと、それを回避するためのアプリケーションの工夫についての説明。SQSには可視性タイムアウト(Visibility Timeout)と分散キュー由来の「同一メッセージが複数回受信される可能性がある」という性質があります。そのため「アプリケーションがべき等になるように設計する必要がある」という点についてコードを交えて解説がありました。
アプリケーションはTemplate Methodパターンを使って「メッセージの受信・削除処理」と「実際のメッセージの処理(exec)」を分割すると、重複受信の際の例外処理やexecメソッドのテストが(キューのことを考えずメッセージに注目すればいいため)やりやすくなる。RDBの排他制御を利用することで重複メッセージの処理を扱いやすくするという説明でした。
SQSにはクセがあるけどアプリケーション側の設計で回避可能なので、利用・運用コストの観点から使っていくと良い。またRedisはLinkedListとblpop/brpopを扱えるので他にRedisを使う場面があるならSQSを使わずRedisに任せてもいいんじゃないかな、ということです。
ElasticBeanstalkやCloudFormation周りの話 @yuukigoodman
丹内さんの発表。Beanstalkは内部でCloudFormationを使ってたり、hooks絡みでundocumentedな機能もあったりするためAWS力が高くないとハマることがあるよという事例(体験談)紹介でした。
.ebextensions をハックするとなんでもできるけど、やりすぎると秘伝のタレになって後々ツライので過剰なカスタマイズはオススメしない。Beanstalk使わず自前で実装してもいいけど、結局行き着くところは同じなのでやっぱりBeanstalk使うのがいいんじゃないかなということです。
QAで、BeanstalkのWorker tierを使うとsqsdがLong Pollingまわりを良きにはからってくれるけど、Visibility Timeoutの問題を解決してくれるわけではないので、やっぱりアプリケーションは冪等に作るべきというやりとりがありました。なるほど。
Cloudfront, API Gateway, Lambda の話 @sakapun
@sakupon さんがサービスしている CloudFront + ELB + EC2 + S3を使った画像配信サイトの話。サイトの画像については自主規制で。
CloudFrontには月3億リクエストきてて、6TBの転送量を扱っているとのこと。AWSの月額利用費20万の約半分がCloudFrontということです。こういうボリュームに対する費用の実例を紹介してもらえるのはうれしいですね。
Amazon API Gatewayとlambdaを使ってみよう! @sakapun
API GatewayとLambdaを使って実演をしていただきました。API GatewayのMethod Responseで Content-Type を変更し(application/json → text/html)、Integration ResponseでJSON→HTMLへの変換することでサーバーレスな動的サイト構築方法を紹介されました。コードはgistで公開されていますので試すこともできます。
ただJSON→HTML変換にはVTL(Apache Velocityというテンプレートエンジン)を覚えなきゃいけなかったり、開発プロセスが複雑、デプロイが面倒といった印象があるのでその辺が導入する上での課題とのこと。JAWS(フルAWSでサーバーレスなバックエンドを作るフレームワーク)にも注目しているそうです。
Lambdaネタでなにか @npoi
LambdaとSphinxを組み合わせて、reST記述 → プルリク → github → Webhook → API Gateway → Lambda → Sphinx → S3をしてみましたという紹介。残念ながら準備の時間切れでgithub WebhookとAPI Gatewayの連携、Sphinxで変換されたHTMLをS3へアップロードする部分が実装できなかったけど実現はできそうということです。
またLambdaが動いているのはAmazon Linuxなので、Amazon Linuxの標準的なコマンドを呼び出せば結構なんでもできそう。例えばTeXが入っていないのでSphinxからPDF出力はできないけどパッケージ入れればどうにかなるかも。でも、その前にLambdaのタイムアウトが起きて実行に失敗するかもしれないので、事前にZIPで固めて展開するのが現実的かも・・・というやりとりがQAで展開されてました。
本気なあなたに送るAWSことはじめ @seijiakatsuka
@seijiakatsukaさんからはAWSの運用まわりについてのお話。
- ユーザー側のセキュリティ大事
- AWSサポート活用
- AWSは無駄なコストを徹底削減できる
スライドでも紹介されてましたがTrusted Advisorがオススメですよ!。とにかく本番環境についてはAWSのビジネスサポートに入って、Trusted Advisorをオールグリーンにしておくだけで相当健全なサイトといえると思います。
Trusted Advisor! Trusted Advisor!! Trusted Advisor!!!
[LT]Amazon SESのメール受信対応でサーバー減らせた話 @civic
NDS主催の@civicさんからはキッズ用みまもりケータイ向けサービスから使われている地図がみにくいので、メールをSES inboud mail機能で受け取ってLambdaで処理し、SNSでスマホアプリに通知するという処理を実装したというお話。
我が家でも子どもにみまもり携帯持たせてましたけど・・・あの地図みにくいですよねー
SESを使うことでPostfixが動いてた自前メールサーバーを停止でき、全部AWSで統一できたよ!ということです。
[LT]Scalaに対する誤解を解く @neko_gata_s
時間に余裕があったので急遽 @neko_gata_s さんからLT。Scala怖くないよ(※)ということです。うん、そういうことです。
(告知)11/14 re:Work meetup Yamagata
リモートワーク(テレワーク)に興味のある方向けの交流会!
(告知)12/14 JAWS FESTA in KYUSYU
今年のJAWS FESTAは九州で!
(告知)11/14 NDS in Niigata #8
新潟市でのIT勉強会!
懇親会
勉強会の本会ともいえる懇親会。個人的なメモです。
- 以前からブログは読んでた猫型さんにお会いできた。LinuxカーネルやMySQLのソースも読める凄腕エンジニアさんでした。
- process-book(process-book)ちゃんと読みます。"[あとで読む]"にしたまま読んでなくてすいません。
- @hayajo さんはYAPC::Asia Tokyo 2014でCPAN のTop 10 Kwalitative Japanese authors 2014に選ばれた凄腕Perl Mongerさんでした。
- @ftjrk さんは長岡高専時代の1こ後輩だそうで。しかも上越出身。よく覚えてるなー。
- ロボカップジュニアをみてると小学生の技術レベルは侮れないらしい。
- 自分の子どもに親の働いてる姿をみせるって大事ですよね。
- 帰りがけにこんなニュースが。上教大あついなー。
- キャスタリア、プログラミング教育指導者の養成に関する共同研究を上越教育大学大森研究室と開始
まとめ
JAWS-UG長野に行った時にも思いましたが、車でたった1時間、山を越えた向こうにはまたもや凄腕エンジニアが集まっていました。NDSは元々 @civic さんが社内で行っていた勉強会が始まりなんだそうです。2ヶ月に1回という高頻度で勉強会を開催していて、今回で44回目ってのがすごいですよね。
次回NDSはNDB(Niigata Dai Bounenkai)らしいので、上越のエンジニアを誘って伺います!